package src.first;

import javax.xml.crypto.Data;
import java.text.DecimalFormat;
import java.text.FieldPosition;
import java.text.NumberFormat;
import java.text.ParsePosition;
import java.util.*;
import java.util.regex.Pattern;

public class demo04 {

    public static void main(String[] args) {
//        {
//            int y = 40;
//            System.out.println("y:"+y);
//            int z = 245;
//            boolean b;
//            {
//                b = y > z;
//                System.out.println("y>z:"+b);
//            }
//        }
//        String word = "hello java";
//        System.out.println("输出字符串："+word);

//        int week = 2;
//
//        switch (week){
//            case 1:
//                System.out.println("星期一");
//                break;
//            case 2:
//                System.out.println("星期二");
//                break;
//            case 3:
//                System.out.println("星期三");
//                break;
//            case 4:
//                System.out.println("星期四");
//                break;
//            case 5:
//                System.out.println("星期五");
//                break;
//            default:
//                System.out.println("Sorry,I don't know");
//        }

//        Scanner scanner = new Scanner(System.in);
//        System.out.println("请输入用户名：");
//        String name = scanner.nextLine();
//        System.out.println("请输入密码：");
//        String password = scanner.nextLine();
//        if(!name.equals("mr")){
//            System.out.println("用户名非法");
//        }else if(!password.equals("mrsoft")){
//            System.out.println("密码不正确");
//        }else{
//            System.out.println("登录成功");
//        }

//        int x = 1;
//        int sum = 0;
//
//        while (x <= 10){
//            sum += x;
//            x++;
//        }
//        System.out.println(sum);

//        int a = 10;
//        while (a != 5){
//            System.out.println("a1:"+a);
//            a--;
//        }
//        a = 10;
//        do{
//            System.out.println("a2:"+a);
//            a--;
//        }while (a != 5);

//        int a = 2;
//        int sum = 0;
//        for (;a < 100;a+=2){
//            sum +=a;
//        }
//        System.out.println("sum:"+sum);

//        int[] a = {1,2,3,4,5,6};
//        for (int i : a) {
//            System.out.println("i:"+i);
//        }
//        int i = 0;
//        while (i < a.length){
//            System.out.println(a[i]);
//            i++;
//        }


//        for (int i = 1;i < 9;i++){
//            for (int j = 1;j <= i; j++){
//                System.out.print(j+"*"+i+"="+(i*j));
//                System.out.print(" ");
//            }
//            System.out.println();
//        }
//        int sum = 0;
//        for (int i = 0;i < 100;i++){
//            sum += i;
//            if(sum > 1000){
//                System.out.println("i:"+i+",sum:"+sum);
//                break;
//            }
//        }

//        int sum = 0;
//        for (int i = 0;i < 4;i++){
//            if(i%2 == 0){
//                continue;
//            }
//            System.out.println("i:"+i);
//            sum += i;
//        }
//        System.out.println("sum:"+sum);

//        printHollowRhomBus(6);

//        int triangle[][] = new int[8][];
//        for(int i = 0;i < triangle.length;i++){
//            triangle[i] = new int[i+1];
//            for (int j = 0;j < triangle[i].length-1;j++){
//                if(i == 0 || j == 0 || j == triangle[i].length - 1){
//                    triangle[i][j] = 1;
//                }else {
//                    triangle[i][j] = triangle[i-1][j]+triangle[i-1][j-1];
//                }
//                System.out.print(triangle[i][j]+"\t");
//            }
//            System.out.println();
//        }

//        int x = 5;
//        if(x % 2 == 0){
//            System.out.println("偶数");
//        }else{
//            System.out.println("奇数");
//        }
//        double i = 1;
//        double sum = 0;
//        while (i < 20){
//            double simple = 1;
//            for(int j = 1; j < i;j++){
//                simple *= j;
//            }
//            sum+=i/simple;
//            i++;
//        }
//        System.out.println("sum:"+sum);

//        int[] num = {1,2,3,4,5,6,7,8,9,10};
//        int sum = 0;
//        for (int i = 0; i < num.length; i++) {
//            sum = sum + num[i];
//        }
//        System.out.println("sum:"+sum);

//        int[] num = {9,5,4,7,5,1};
//        int min = num[0];
//        for (int i = 1; i < num.length; i++) {
//            if(min > num[i]){
//                min = num[i];
//            }
//        }
//        System.out.println(min);

//        int a[][] = new int[3][4];
//        for (int i = 0; i < a.length; i++) {
//            for (int i1 = 0; i1 < a[i].length; i1++) {
//                int i2 = a[i][i1];
//                System.out.print(i2+" ");
//            }
//            System.out.println();
//        }

//        int[][][] a = new int[4][3][2];
//        for (int i = 0; i < a.length; i++) {
//            System.out.println("第"+i+"个二维数组");
//            for (int i1 = 0; i1 < a[i].length; i1++) {
//                for (int i2 = 0; i2 < a[i][i1].length; i2++) {
//                    int i3 = a[i][i1][i2];
//                    System.out.print(i3+" ");
//                }
//                System.out.println();
//            }
//        }

//        int arr[][] = new int[][]{{1,2,3},{4,5,6},{7,8,9},{10,11,12}};
//
//        printArray(arr);
//        int arr1[][] = new int[arr[0].length][arr.length];
//        for (int i = 0; i < arr.length; i++) {
//            for (int i1 = 0; i1 < arr[i].length; i1++) {
//                arr1[i1][i] = arr[i][i1];
//            }
//        }
//        System.out.println("arr1:");
//        printArray(arr1);

//        int arr[][] = new int[][]{{1,2,3},{4,5,6},{7,8,9}};
//        int tr = 0;
//        printArray(arr);
//        for (int i = 0; i < arr.length; i++) {
//            tr += arr[i][i];
//        }
//        System.out.println("tr:"+tr);

//        int arr[] = new int[4];
//        Arrays.fill(arr,2,3,8);
//        for (int i : arr) {
//            System.out.print(i+",");
//        }

//        int[] arr = {4,5,2,1};
//        int[] arr1 = new int[3];
//        Arrays.sort(arr);
//        printFirst(arr);
//        int[] ints = Arrays.copyOf(arr, 5);
//        printFirst(ints);

//        int[] ints = Arrays.copyOfRange(arr, 1, 2);
//        printFirst(ints);

//        int num1 = 1024 * 1024 * 2;
//        int[] arr1 = new int[num1];
//        for (int i : arr1) {
//            arr1[i] = i;
//        }
//        long memory1 = Runtime.getRuntime().totalMemory()/1024/1024;
//        System.out.println("一维数组占用的总内存（MB）："+memory1);
//
//        int num2 = 1024*1024;
//        int[][] arr2 = new int[num2][2];
//        for (int i = 0; i < arr2.length; i++) {
//            arr2[i][0] = i;
//            arr2[i][1] = i;
//        }
//        long l = Runtime.getRuntime().totalMemory() / 1024 / 1024;
//        System.out.println("用二维数组占用的内存（MB）："+l);

//        int[] array = new int[]{20,40,90,30,80,70,50};
//        System.out.println("排序前：");
//        printFirst(array);
//        int j;
//        for (int i = 1; i < array.length; i++) {
//            int temp = array[i];
//            for (j = i-1;j>0 && array[j] > temp;j--){
//                array[j+1] = array[j];
//            }
//            array[j+1] = temp;
//        }
//        System.out.println();
//        printFirst(array);

//        int[] array = new int[]{63,4,24,1,3,13};
//        System.out.println("冒泡排序");
//        for (int i = 0; i < array.length; i++) {
//            for (int i1 = 0; i1 < array.length-1; i1++) {
//                if(array[i1] > array[i]){
//                    int temp = array[i];
//                    array[i] = array[i1];
//                    array[i1] = temp;
//                }
//            }
//        }
//        printFirst(array);

//        int arr[][] = new int[3][3];
//        int a = 2;
//        int b = 3/2;
//        System.out.println(b);
//        for(int i = 1;i <= 9;i++){
//            arr[a++][b++] = i;
//            if(i % 3 == 0){
//                a = a - 2;
//                b = b - 1;
//            }else {
//                a = a % 3;
//                b = b % 3;
//            }
//        }
//
//        printArray(arr);

//        int[] array = new int[]{4,24,1,3,13};
//        int max = array[0];
//        for (int i = 0; i < array.length; i++) {
//            if(array[i] > max){
//                max = array[i];
//            }
//        }
//        System.out.println(max);

//        char a[] = {'s','t','u','d','e','n','t'};
//        String s = new String(a,0,a.length);
//        System.out.println(s.indexOf('t')+","+s.lastIndexOf('t')+","+s.charAt(2));

//        String str = "hello world";
//        String trim = str.trim();
//        System.out.println(trim);
//        StringTokenizer stringTokenizer = new StringTokenizer(str, " ");
//        StringBuffer stringBuffer = new StringBuffer();
//        int i = 1;
//        while (stringTokenizer.hasMoreTokens()){
//            i++;
//            stringBuffer.append(stringTokenizer.nextToken());
//        }
//        System.out.println(stringBuffer);

//        String s = str.replaceAll(" ", "");
//        String s = str.replaceFirst("hell", "t");
//        System.out.println(s);

//        String str = new String("hello world");
//        String str2 = new String("hello world");
//        String str3 = new String("Hello world");
//
//        System.out.println(str.hashCode()+","+str2.hashCode());
//        if(str == str2){
//            System.out.println("str == str2");
//        }
//
//        if(str2 == str3){
//            System.out.println("str3 == str2");
//        }

        //String str1 = "111122223334455";
        //boolean b = str1.startsWith("11");
        //boolean b1 = str1.endsWith("55");
        //System.out.println(b+","+b1);

//        String str2 = "aaaAAbbccDD";
//        String s = str2.toUpperCase();
//        String s1 = str2.toLowerCase();
//        System.out.println(s+","+s1);

//        String s = new String("abc,dcfgtr,hgb。hhhg");
//        String[] split = s.split(",|a");
//        for (String s1 : split) {
//            System.out.println(s1);
//        }

//        String str1 = "1245456b";
//        String str2 = "123";
//        boolean number = isNumber(str1);
//        boolean number1 = isNumber(str2);
//        System.out.println(number+","+number1);

//        Date today = new Date();
//        String a = String.format(Locale.US, "%tb", today);
//        String b = String.format(Locale.US, "%tB", today);
//        String c = String.format("%ta", today);
//        String d = String.format("%tA", today);
//        String e = String.format("%tY", today);
//        String f = String.format("%tm", today);
//        String g = String.format("%td", today);
//        String h = String.format("%ty", today);
//        String i = String.format("%te", today);
//        System.out.println(a+","+b+","+c+","+d+","+e+","+f+","+g+","+h+","+i);

//        Date date = new Date();
//        System.out.println("默认时间："+date);
//        System.out.println("两位24小时制的小时："+String.format("%tH",date));
//        System.out.println("两位的12小时制的小时："+String.format("%tI",date));
//        System.out.println("24小时制的小时："+String.format("%tk",date));
//        System.out.println("12小时制中的小时："+String.format("%tl",date));
//        System.out.println("两位小时中的分钟："+String.format("%tM",date));
//        System.out.println("俩位小时中的秒："+String.format("%tS",date));
//        System.out.println("表示时区缩写形式的字符串："+String.format("%tZ",date));
//        System.out.println("上午还是下午："+String.format("%tp",date));

//        Date date = new Date();
//        System.out.println("默认的日期时间格式："+date);
//        System.out.println("24小时制的时间，被格式化为小时和分钟："+String.format("%tR",date));
//        System.out.println("24小时制的时间，被格式化为小时，分钟和秒："+String.format("%tT",date));
//        System.out.println("12小时制的时间，被格式化为："+String.format("%tr",date));
//        System.out.println("日期被格式化为："+String.format("%tD",date));
//        System.out.println("ISO 8601格式的完整日期，被格式化为："+String.format("%tF",date));
//        System.out.println("日期和时间被格式化为："+String.format("%tc",date));

//        String str1 = String.format("%d",400/2);
//        String str2 = String.format("%b", 3 > 5);
//        String str3 = String.format("%x", 200);
//
//        System.out.println(str1+","+str2+","+str3);

//        Scanner scanner = new Scanner(System.in);
//        System.out.println("请输入一个金额：");
//        double v = scanner.nextDouble();
//        System.out.println(v);
//        String convert = convert(v);
//        System.out.println(convert);

//        Scanner scanner = new Scanner(System.in);
//        System.out.println("请输入一个数字：");
//        double number = scanner.nextDouble();
//        System.out.println("Local类的常量作为构造参数获得不同的货币格式：");
//        NumberFormat format = NumberFormat.getCurrencyInstance(Locale.CHINA);
//        System.out.println("Local.CHINA:"+format.format(number));
//        format = NumberFormat.getCurrencyInstance(Locale.US);
//        System.out.println("Local.US:"+format.format(number));
//        format = NumberFormat.getCurrencyInstance(Locale.ENGLISH);
//        System.out.println("Local.ENGLISH:"+format.format(number));
//        format = NumberFormat.getCurrencyInstance(Locale.TAIWAN);
//        System.out.println("Local.TAIWAN:"+format.format(number));

//        String s1 = "Mikj007";
//        String s2 = "mrkj007";
//        String regex1 = "\\p{Upper}\\p{Lower}\\p{Lower}\\p{Lower}\\d\\d\\d";
//        String regex1 = "\\p{Upper}\\p{Lower}{3}\\d{3}";
//        System.out.println(s1.matches(regex1));
//        System.out.println(s2.matches(regex1));

//        String regex = "\\w{0,}\\@\\w{0,}\\.{1}\\w{0,}";
//        String str1 = "aaa@";
//        String str2 = "aaaa";
//        String str3 = "aaaaa@111.com";
//
//        System.out.println(str1.matches(regex));
//        System.out.println(str2.matches(regex));
//        System.out.println(str3.matches(regex));

//        String telephone1 = "11024588795";
//        String telephone2 = "15044268138";
//        System.out.println(check(telephone1));
//        System.out.println(check(telephone2));

//        String ip = "192.168.1.1";
//        System.out.println(matches(ip));

//        String text = "明日科技soft";
//        int amount = 0;
//        String regex = "^[\u4E00-\u9FA5]{0,}$";
//        for (int i = 0; i < text.length(); i++) {
//            boolean matches = Pattern.matches(regex, "" + text.charAt(i));
//            if(matches){
//                amount++;
//            }
//        }
//        System.out.println("一共有："+amount+"个汉字。");

//        String str = "";
//        long starTime = System.currentTimeMillis();
//        for (long i = 0;i < 1000;i++){
//            str = str + i;
//        }
//        long endTime = System.currentTimeMillis();
//        long time = endTime - starTime;
//        System.out.println("String消耗的时间："+time);
//
//        starTime = System.currentTimeMillis();
//        StringBuilder builder = new StringBuilder();
//        for (long j = 0;j < 1000;j++){
//            builder.append(j);
//        }
//        endTime = System.currentTimeMillis();
//        time = endTime - starTime;
//        System.out.println("stringbuilder消耗的时间："+time);

//        StringBuilder builder = new StringBuilder();
//        StringBuffer buffer = new StringBuffer("Sunday");
//        builder.append(buffer);
//        System.out.println(builder);

//        String str1 = "int";
//        String str2 = "ser";
//        StringBuilder builder = new StringBuilder(str1);
//        builder.insert(2,str2);
//        System.out.println(builder);

//        StringBuilder builder = new StringBuilder("StringBuilder");
//        String string = builder.toString();
//        System.out.println(string);

//        String text = "明日soft";
//        char[] chars = text.toCharArray();
//        StringBuilder builder = new StringBuilder();
//        for (char aChar : chars) {
//            builder.append((int) aChar+",");
//        }
//        System.out.println(builder.toString());

//        String s = "哈哈哈哈你好你好";
//        StringBuilder builder = new StringBuilder(s);
//        System.out.println(builder+","+s.length());
//        for (int i = 0; i < builder.length(); i++) {
//            for (int j = i+1; j < builder.length(); j++) {
//                char c = builder.charAt(j);
//                if(builder.charAt(i)==builder.charAt(j)){
//                    builder.deleteCharAt(j);
//                    j--;
//                }
//            }
//        }
//        System.out.println(builder+","+builder.length());

//        String value = "我爱Java";
//        char secret = '祈';
//        System.out.println(value);
//        String s = EAndU(value, secret);
//        System.out.println("第一次加密："+s);
//        String s1 = EAndU(s, secret);
//        System.out.println("第二次加密："+s1);

//        String str1 = "这是《《咏雪》》";
//        StringBuilder builder = new StringBuilder(str1);
//        builder.reverse();
//        System.out.println(builder);
//        int count = 0;
//        for (int i = 0; i < str1.length(); i++) {
//            if(str1.charAt(i) != builder.charAt(i)){
//                System.out.println("不是回文");
//                break;
//            }
//            if(str1.charAt(i) != builder.charAt(i)){
//                count++;
//            }
//        }
//        if(count == str1.length()){
//            System.out.println("是回文");
//        }

 //       System.out.println(selectNUmber("mingrikejiavabu", 'i'));

   //     System.out.println(deleteTrim(" trhj 2454 gh . hj"));

        Date data = new Date();
        System.out.println(String.format("%tF", data));
    }



    public static String deleteTrim(String str){
        char[] chars = str.toCharArray();
        StringBuilder builder = new StringBuilder();
        for (int i = 0; i < chars.length; i++) {
            if(chars[i] != ' '){
                builder.append(chars[i]);
            }
        }
        return builder.toString();
    }

    public static int selectNUmber(String str,char c){
        char[] chars = str.toCharArray();
        int count = 0;
        for (int i = 0; i < chars.length; i++) {
            if(chars[i]==c){
                count++;
            }
        }
        return count;
    }

    public static String EAndU(String value,char secret){
        byte[] bt = value.getBytes();
        for (int i = 0; i < bt.length; i++) {
            bt[i] = (byte) (bt[i]^(int)secret);
        }
        return new String(bt,0,bt.length);
    }

    public static String matches(String text){

        if(text != null && !text.isEmpty()){
            String regex = "^(1\\d{2}|2[0-4]\\d|25[0-5][1-9]\\d[1-9])\\."
                    +"(1\\d{2}|2[0-4]\\d|25[0-5][1-9]\\d\\d)\\."
                    +"(1\\d{2}|2[0-4]\\d|25[0-5][1-9]\\d\\d)\\."
                    +"(1\\d{2}|2[0-4]\\d|25[0-5][1-9]\\d\\d)\\$";
            if(text.matches(regex)){
                return text+"\n是一个合法的IP地址";
            }else{
                return text+"\n不是一个合法的IP地址";
            }
        }
        return "请输入合法的IP地址";
    }

    public static String check(String handset){
        String regex = "1[3,5,8]\\d{9}$";
        if(handset.matches(regex)){
            return handset+"\n是合法的手机号";
        }else{
            return handset+"\n不是合法的手机号";
        }
    }

    public static String convert(double d){
        DecimalFormat decimalFormat = new DecimalFormat("#0.###");
        String strNum = decimalFormat.format(d);
        if(strNum.indexOf(".") != -1){
            String num = strNum.substring(0, strNum.indexOf("."));
            if(num.length() > 12){
                System.out.println("数字太大，不能完成转换！");
                return "";
            }
        }
        String point = "";
        if(strNum.indexOf(".") != -1){
            point = "元";
        }else {
            point = "元整";
        }
        String result = getInteger(strNum)+point+getDecimal(strNum);
        if(result.startsWith("元")){
            result = result.substring(1,result.length());
        }
        return result;
    }

    public static String getDecimal(String num){
        // 大写数字
        final String[] STR_NUMBER = {"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"};
        // 整数单位
        final String[] STR_UNIT = {"", "拾", "佰", "仟", "万", "拾", "佰", "仟", "亿", "拾", "佰", "仟"};
        // 小数单位
        final String[] STR_UNIT2 = {"厘", "分", "角"};
        if(num.indexOf(".") == -1){
            return "";
        }
        num = num.substring(num.indexOf(".")+1);
        num = new StringBuffer(num).reverse().toString();
        StringBuffer temp = new StringBuffer();
        for (int i = 0; i < num.length() ; i++) {
            if(num.length() == 1){
                temp.append(STR_UNIT2[i+2]);
                temp.append(STR_NUMBER[num.charAt(i)-48]);
            }else if(num.length() == 2){
                temp.append(STR_UNIT2[i+1]);
                temp.append(STR_NUMBER[num.charAt(i)-48]);
            } else if (num.length() <= 3) {
                temp.append(STR_UNIT2[i]);
                temp.append(STR_NUMBER[num.charAt(i)-48]);
            }
        }
        num = temp.reverse().toString();
        num = numReplace(num,"零角","零");
        num = numReplace(num,"零分","零");
        num = numReplace(num,"零厘","零");
        num = numReplace(num,"零零","零");

        if(num.lastIndexOf("零") == num.length() - 1){
            num = num.substring(0,num.length()-1);
        }
        return num;
    }

    public static String getInteger(String num){
        // 大写数字
        final String[] STR_NUMBER = {"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"};
        // 整数单位
        final String[] STR_UNIT = {"", "拾", "佰", "仟", "万", "拾", "佰", "仟", "亿", "拾", "佰", "仟"};
        // 小数单位

        if(num.indexOf(".") != -1){
            num = num.substring(0,num.indexOf("."));
        }
        num = new StringBuffer(num).reverse().toString();
        StringBuffer temp = new StringBuffer();
        for (int i = 0; i < num.length(); i++) {
            temp.append(STR_UNIT[i]);
            temp.append(STR_NUMBER[num.charAt(i)-48]);
        }
        num = temp.reverse().toString();
        num = numReplace(num,"零拾","零");
        num = numReplace(num,"零佰","零");
        num = numReplace(num,"零仟","零");
        num = numReplace(num,"零万","零");
        num = numReplace(num,"零亿","零");
        num = numReplace(num,"亿万","亿");

        if(num.lastIndexOf("零") == num.length() - 1){
            num = num.substring(0,num.length() - 1);
        }
        return num;
    }

    public static String numReplace(String num,String oldStr,String newStr){
        while (true){
            if(num.indexOf(oldStr)==-1){
                break;
            }
            num = num.replace(oldStr,newStr);
        }
        return num;
    }

    public static boolean isNumber(String str){
        char[] c = str.toCharArray();
        for (int i = 0; i < c.length; i++) {
            if(!Character.isDigit(c[i])){
                return false;
            }
        }
        return true;
    }

    public static void printFirst(int[] arr){
        for (int i : arr) {
            System.out.print(i+",");
        }
    }

    public static void printArray(int[][] arr){
        for (int i = 0; i < arr.length; i++) {
            for (int i1 = 0; i1 < arr[i].length; i1++) {
                System.out.print(arr[i][i1]+" ");
            }
            System.out.println();
        }
    }

    public static void printHollowRhomBus(int size){
        if(size % 2 == 0){
            size++;
        }

        for (int i = 0;i < size / 2 + 1;i++){
            for (int j = size / 2 + 1;j > i + 1;j--){
                System.out.print(" ");
            }
            for (int j = 0;j < 2*i+1;j++){
                if(j == 0 || j == 2*i){
                    System.out.print("*");
                }else {
                    System.out.print(" ");
                }
            }
            System.out.println();
        }

        for (int i = size/2+1;i < size;i++){
            for (int j = 0;j < i - size/2;j++){
                System.out.print(" ");
            }
            for (int j = 0;j < 2*size-1-2*i;j++){
                if(j == 0 || j == 2*(size-i-1)){
                    System.out.print("*");
                }else{
                    System.out.print(" ");
                }
            }
            System.out.println();
        }
    }
}
